package js;

import java.util.Scanner;

public class q互质数的个数 {
    static long mod = 998244353;
    public static void main(String[] args) {

        //输入一行包含两个整数分别表示a，b，用一个空格分隔。
        Scanner scan = new Scanner(System.in);
        long a = scan.nextLong();
        long b = scan.nextLong();
        scan.close();
        long res = a;
        long tmp = a;
        // 对a用欧拉函数求得a互质数的个数
        for(int i = 2; i <= tmp;i++){
            if( tmp%i == 0){
                res = res/i*(i-1);
                while(tmp%i == 0){
                    tmp = tmp/i;
                }
            }
        }

        long tmp2 = qmi(a,b-1);
        System.out.println((res*tmp2)%mod);


    }

    /**
     *  最大公约数 , 不用了
     * @param a
     * @param b
     * @return
     */
    public static long gcd(long a, long b) {
        if (b == 0) {
            return a;
        }
        return gcd(b, a % b);
    }

    /**
     *  快速幂
     * @param a
     * @param b
     * @return
     */
    static long qmi(long a,long b){
        long res = 1;
        while(b>0){
            if((b&1)>0){
                res = (res*a)%mod;
            }
            a = (a*a)%mod;
            b>>=1;
        }
        return res;
    }

}
